As electronic devices have become more sophisticated, they now typically include computing components such as a processor, volatile memory, non-volatile memory and at least one interface to other components of the device. Microcode for directing the activity of the processor is usually resident in the non-volatile memory, and is typically loaded into the volatile memory and executed by the processor to perform various activities and operations. Computer peripherals, such as serial ports, USB hubs, modems, disk drives, network interface cards, and printers are especially suited for these types of components.
Supporting computer peripherals in the field, especially printers, can be difficult because, in many cases, specialized routines must be loaded into the printer in order to diagnose problems.
Reference in this regard may be had to U.S. Pat. No. 5,768,495, entitled “Method and Apparatus for Printer Diagnostics,” by Campbell et al., issued Jun. 16, 1998.
Supporting the microcode of a printer at a customer site is also a difficult process because, more often than not, diagnosing and correction of microcode problems requires a customer engineer to be physically present at the printer. This is a disadvantage in that it results in a higher support cost because of travel time, availability of tools, etc. In order to install new microcode, the new microcode must be downloaded into the non-volatile memory of the device. This may require a special hardware and/or software interface. In most cases, the operating system of the computer controlling the printer controls all access to the printer and only provides a user with operations related to the function of the device, for example, printing. In this example, the computer would provide no facility to download anything other than print jobs to the printer. When the operating system permits no other access, a special application running under the operating system may be required to download new program code. Utilizing such an application involves obtaining the application, installing the application, and invoking the application in order to perform the installation.
To further complicate matters, the operating system may not relinquish control of the printer to the application and may have to be disabled or shut down in order to run the application for performing such a download.
Other techniques include embedding a special code within a data field of a known control code for the particular peripheral. The data field and the special code may be chosen such that the possibility of the special code being used as actual data in that data field is extremely low. Upon recognizing the control code coupled with the special code in the data field, the peripheral waits for a specific second command. If the specific second command is received the peripheral loads the data attached to that subsequent command as new microcode, and reboots.
Reference in this regard may be had to U.S. Pat. No. 5,659,801, entitled, “Method and Apparatus for Replacing Resident Peripheral Device Control Microcode by Download via an Application Program,” by W. Kopsaftis, issued Aug. 19, 1997.